package com.codeplateform.common;

import lombok.Data;

@Data
public class ResultModel<T> {
    private Integer code;//封装返回的code码

    private String message;//封装返回的信息

    private T content;//返回的具体内容,公司要求是封装两层数据，所以T可以是ResultModel<>

    public ResultModel(Integer code, String message) {
        this.code = code;
        this.message = message;
    }

    public ResultModel(Integer code, String message, T content) {
        this.code = code;
        this.message = message;
        this.content = content;
    }

    public static <T> ResultModel<T> success(Integer code,String message){
        return new ResultModel(200,message);
    }
    /**
     * 操作成功返回的信息
     * @param message
     * @param content
     * @param <T>
     * @return
     */
    public static <T> ResultModel<T> success(String message,T content){
        return new ResultModel(200,message,content);
    }

    /**
     * 操作成功返回的信息
     * @param content
     * @param <T>
     * @return
     */
    public static <T> ResultModel<T> success(T content){
        return new ResultModel(200,"success",content);
    }

    /**
     * 操作成功返回的信息
     * @param <T>
     * @return
     */
    public static <T> ResultModel<T> success(){
        return new ResultModel(200,"success");
    }

    /**
     * 操作失败返回的信息
     * @param code
     * @param message
     * @param <T>
     * @return
     */
    public static <T> ResultModel<T> error(Integer code,String message){
        return new ResultModel(code,message);
    }

    /**
     * 操作失败返回的信息
     * @param message
     * @param <T>
     * @return
     */
    public static <T> ResultModel<T> error(String message,T content){
        return new ResultModel(-1,message,content);
    }

    /**
     * 操作失败返回的信息
     * @param <T>
     * @return
     */
    public static <T> ResultModel<T> error(){
        return new ResultModel(-1,"error");
    }
}
